/*
    Validform version 5.3.2
	By sean during April 7, 2010 - March 26, 2013
	For more information, please visit http://validform.rjboy.cn
	Validform is available under the terms of the MIT license.
*/

(function (d, f, b) {
  var g = null,
    j = null,
    i = true;
  var e = { tit: "提示信息", w: { "*": "不能为空！", "*6-16": "请填写6到16位任意字符！", "n": "请填写数字！", "n6-16": "请填写6到16位数字！", "s": "不能输入特殊字符！", "s6-18": "请填写6到18位字符！", "p": "请填写邮政编码！", "m": "请填写正确的手机号码！", "e": "邮箱地址格式不对！", "url": "请填写网址！" }, def: "请填写正确信息！", undef: "datatype未定义！", reck: "两次输入的内容不一致！", r: "通过信息验证！", c: "正在检测信息…", s: "请{填写|选择}{0|信息}！", v: "所填信息没有经过验证，请稍后…", p: "正在提交数据…" };
  d.Tipmsg = e;
  var a = function (l, n, k) {
    var n = d.extend({}, a.defaults, n);
    n.datatype && d.extend(a.util.dataType, n.datatype);
    var m = this;
    m.tipmsg = { w: {} };
    m.forms = l;
    m.objects = [];
    if (k === true) {
      return false }
    l.each(function () {
      if (this.validform_inited == "inited") {
        return true }
      this.validform_inited = "inited";
      var p = this;
      p.settings = d.extend({}, n);
      var o = d(p);
      p.validform_status = "normal";
      o.data("tipmsg", m.tipmsg);
      o.delegate("[datatype]", "blur", function () {
        var q = arguments[1];
        a.util.check.call(this, o, q) });
      o.delegate(":text", "keypress", function (q) {
        if (q.keyCode == 13 && o.find(":submit").length == 0) { o.submit() } });
      a.util.enhance.call(o, p.settings.tiptype, p.settings.usePlugin, p.settings.tipSweep);
      p.settings.btnSubmit && o.find(p.settings.btnSubmit).bind("click", function () { o.trigger("submit");
        return false });
      o.submit(function () {
        var q = a.util.submitForm.call(o, p.settings);
        q === b && (q = true);
        return q });
      o.find("[type='reset']").add(o.find(p.settings.btnReset)).bind("click", function () { a.util.resetForm.call(o) }) });
    if (n.tiptype == 1 || (n.tiptype == 2 || n.tiptype == 3) && n.ajaxPost) { c() } };
  a.defaults = { tiptype: 1, tipSweep: false, showAllError: false, postonce: false, ajaxPost: false };
  a.util = { dataType: { "*": /[\w\W]+/, "*6-16": /^[\w\W]{6,16}$/, n: /^\d+$/, "n6-16": /^\d{6,16}$/, s: /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/, "s6-18": /^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,18}$/, p: /^[0-9]{6}$/, m: /^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/, e: /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, url: /^(\w+:\/\/)?\w+(\.\w+)+.*$/ }, toString: Object.prototype.toString, isEmpty: function (k) {
      return k === "" || k === d.trim(this.attr("tip")) }, getValue: function (m) {
      var l, k = this;
      if (m.is(":radio")) { l = k.find(":radio[name='" + m.attr("name") + "']:checked").val();
        l = l === b ? "" : l } else {
        if (m.is(":checkbox")) { l = "";
          k.find(":checkbox[name='" + m.attr("name") + "']:checked").each(function () { l += d(this).val() + "," });
          l = l === b ? "" : l } else { l = m.val() } }
      l = d.trim(l);
      return a.util.isEmpty.call(m, l) ? "" : l }, enhance: function (l, m, n, k) {
      var o = this;
      o.find("[datatype]").each(function () {
        if (l == 2) {
          if (d(this).parent().next().find(".Validform_checktip").length == 0) { d(this).parent().next().append("<span class='Validform_checktip' />");
            d(this).siblings(".Validform_checktip").remove() } } else {
          if (l == 3 || l == 4) {
            if (d(this).siblings(".Validform_checktip").length == 0) { d(this).parent().append("<span class='Validform_checktip' />");
              d(this).parent().next().find(".Validform_checktip").remove() } } } });
      o.find("input[recheck]").each(function () {
        if (this.validform_inited == "inited") {
          return true }
        this.validform_inited = "inited";
        var q = d(this);
        var p = o.find("input[name='" + d(this).attr("recheck") + "']");
        p.bind("keyup", function () {
          if (p.val() == q.val() && p.val() != "") {
            if (p.attr("tip")) {
              if (p.attr("tip") == p.val()) {
                return false } }
            q.trigger("blur") } }).bind("blur", function () {
          if (p.val() != q.val() && q.val() != "") {
            if (q.attr("tip")) {
              if (q.attr("tip") == q.val()) {
                return false } }
            q.trigger("blur") } }) });
      o.find("[tip]").each(function () {
        if (this.validform_inited == "inited") {
          return true }
        this.validform_inited = "inited";
        var q = d(this).attr("tip");
        var p = d(this).attr("altercss");
        d(this).focus(function () {
          if (d(this).val() == q) { d(this).val("");
            if (p) { d(this).removeClass(p) } } }).blur(function () {
          if (d.trim(d(this).val()) === "") { d(this).val(q);
            if (p) { d(this).addClass(p) } } }) });
      o.find(":checkbox[datatype],:radio[datatype]").each(function () {
        if (this.validform_inited == "inited") {
          return true }
        this.validform_inited = "inited";
        var q = d(this);
        var p = q.attr("name");
        o.find("[name='" + p + "']").filter(":checkbox,:radio").bind("click", function () { setTimeout(function () { q.trigger("blur") }, 0) }) });
      o.find("select[datatype][multiple]").bind("click", function () {
        var p = d(this);
        setTimeout(function () { p.trigger("blur") }, 0) });
      a.util.usePlugin.call(o, m, l, n, k) }, usePlugin: function (o, l, n, r) {
      var s = this,
        o = o || {};
      if (s.find("input[plugin='swfupload']").length && typeof (swfuploadhandler) != "undefined") {
        var k = { custom_settings: { form: s, showmsg: function (v, t, u) { a.util.showmsg.call(s, v, l, { obj: s.find("input[plugin='swfupload']"), type: t, sweep: n }) } } };
        k = d.extend(true, {}, o.swfupload, k);
        s.find("input[plugin='swfupload']").each(function (t) {
          if (this.validform_inited == "inited") {
            return true }
          this.validform_inited = "inited";
          d(this).val("");
          swfuploadhandler.init(k, t) }) }
      if (s.find("input[plugin='datepicker']").length && d.fn.datePicker) { o.datepicker = o.datepicker || {};
        if (o.datepicker.format) { Date.format = o.datepicker.format;
          delete o.datepicker.format }
        if (o.datepicker.firstDayOfWeek) { Date.firstDayOfWeek = o.datepicker.firstDayOfWeek;
          delete o.datepicker.firstDayOfWeek }
        s.find("input[plugin='datepicker']").each(function (t) {
          if (this.validform_inited == "inited") {
            return true }
          this.validform_inited = "inited";
          o.datepicker.callback && d(this).bind("dateSelected", function () {
            var u = new Date(d.event._dpCache[this._dpId].getSelected()[0]).asString(Date.format);
            o.datepicker.callback(u, this) });
          d(this).datePicker(o.datepicker) }) }
      if (s.find("input[plugin*='passwordStrength']").length && d.fn.passwordStrength) { o.passwordstrength = o.passwordstrength || {};
        o.passwordstrength.showmsg = function (u, v, t) { a.util.showmsg.call(s, v, l, { obj: u, type: t, sweep: n }) };
        s.find("input[plugin='passwordStrength']").each(function (t) {
          if (this.validform_inited == "inited") {
            return true }
          this.validform_inited = "inited";
          d(this).passwordStrength(o.passwordstrength) }) }
      if (r != "addRule" && o.jqtransform && d.fn.jqTransSelect) {
        if (s[0].jqTransSelected == "true") {
          return }
        s[0].jqTransSelected = "true";
        var m = function (t) {
          var u = d(".jqTransformSelectWrapper ul:visible");
          u.each(function () {
            var v = d(this).parents(".jqTransformSelectWrapper:first").find("select").get(0);
            if (!(t && v.oLabel && v.oLabel.get(0) == t.get(0))) { d(this).hide() } }) };
        var p = function (t) {
          if (d(t.target).parents(".jqTransformSelectWrapper").length === 0) { m(d(t.target)) } };
        var q = function () { d(document).mousedown(p) };
        if (o.jqtransform.selector) { s.find(o.jqtransform.selector).filter('input:submit, input:reset, input[type="button"]').jqTransInputButton();
          s.find(o.jqtransform.selector).filter("input:text, input:password").jqTransInputText();
          s.find(o.jqtransform.selector).filter("input:checkbox").jqTransCheckBox();
          s.find(o.jqtransform.selector).filter("input:radio").jqTransRadio();
          s.find(o.jqtransform.selector).filter("textarea").jqTransTextarea();
          if (s.find(o.jqtransform.selector).filter("select").length > 0) { s.find(o.jqtransform.selector).filter("select").jqTransSelect();
            q() } } else { s.jqTransform() }
        s.find(".jqTransformSelectWrapper").find("li a").click(function () { d(this).parents(".jqTransformSelectWrapper").find("select").trigger("blur") }) } }, getNullmsg: function (o) {
      var n = this;
      var m = /[\u4E00-\u9FA5\uf900-\ufa2da-zA-Z\s]+/g;
      var k;
      var l = o[0].settings.label || ".Validform_label";
      l = n.siblings(l).eq(0).text() || n.siblings().find(l).eq(0).text() || n.parent().siblings(l).eq(0).text() || n.parent().siblings().find(l).eq(0).text();
      l = l.replace(/\s(?![a-zA-Z])/g, "").match(m);
      l = l ? l.join("") : [""];
      m = /\{(.+)\|(.+)\}/;
      k = o.data("tipmsg").s || e.s;
      if (l != "") { k = k.replace(/\{0\|(.+)\}/, l);
        if (n.attr("recheck")) { k = k.replace(/\{(.+)\}/, "");
          n.attr("nullmsg", k);
          return k } } else { k = n.is(":checkbox,:radio,select") ? k.replace(/\{0\|(.+)\}/, "") : k.replace(/\{0\|(.+)\}/, "$1") }
      k = n.is(":checkbox,:radio,select") ? k.replace(m, "$2") : k.replace(m, "$1");
      n.attr("nullmsg", k);
      return k }, getErrormsg: function (s, n, u) {
      var o = /^(.+?)((\d+)-(\d+))?$/,
        m = /^(.+?)(\d+)-(\d+)$/,
        l = /(.*?)\d+(.+?)\d+(.*)/,
        q = n.match(o),
        t, r;
      if (u == "recheck") { r = s.data("tipmsg").reck || e.reck;
        return r }
      var p = d.extend({}, e.w, s.data("tipmsg").w);
      if (q[0] in p) {
        return s.data("tipmsg").w[q[0]] || e.w[q[0]] }
      for (var k in p) {
        if (k.indexOf(q[1]) != -1 && m.test(k)) { r = (s.data("tipmsg").w[k] || e.w[k]).replace(l, "$1" + q[3] + "$2" + q[4] + "$3");
          s.data("tipmsg").w[q[0]] = r;
          return r } }
      return s.data("tipmsg").def || e.def }, _regcheck: function (t, n, u, A) {
      var A = A,
        y = null,
        v = false,
        o = /\/.+\//g,
        k = /^(.+?)(\d+)-(\d+)$/,
        l = 3;
      if (o.test(t)) {
        var s = t.match(o)[0].slice(1, -1);
        var r = t.replace(o, "");
        var q = RegExp(s, r);
        v = q.test(n) } else {
        if (a.util.toString.call(a.util.dataType[t]) == "[object Function]") { v = a.util.dataType[t](n, u, A, a.util.dataType);
          if (v === true || v === b) { v = true } else { y = v;
            v = false } } else {
          if (!(t in a.util.dataType)) {
            var m = t.match(k),
              z;
            if (!m) { v = false;
              y = A.data("tipmsg").undef || e.undef } else {
              for (var B in a.util.dataType) { z = B.match(k);
                if (!z) {
                  continue }
                if (m[1] === z[1]) {
                  var w = a.util.dataType[B].toString(),
                    r = w.match(/\/[mgi]*/g)[1].replace("/", ""),
                    x = new RegExp("\\{" + z[2] + "," + z[3] + "\\}", "g");
                  w = w.replace(/\/[mgi]*/g, "/").replace(x, "{" + m[2] + "," + m[3] + "}").replace(/^\//, "").replace(/\/$/, "");
                  a.util.dataType[t] = new RegExp(w, r);
                  break } } } }
          if (a.util.toString.call(a.util.dataType[t]) == "[object RegExp]") { v = a.util.dataType[t].test(n) } } }
      if (v) { l = 2;
        y = u.attr("sucmsg") || A.data("tipmsg").r || e.r;
        if (u.attr("recheck")) {
          var p = A.find("input[name='" + u.attr("recheck") + "']:first");
          if (n != p.val()) { v = false;
            l = 3;
            y = u.attr("errormsg") || a.util.getErrormsg.call(u, A, t, "recheck") } } } else { y = y || u.attr("errormsg") || a.util.getErrormsg.call(u, A, t);
        if (a.util.isEmpty.call(u, n)) { y = u.attr("nullmsg") || a.util.getNullmsg.call(u, A) } }
      return { passed: v, type: l, info: y } }, regcheck: function (n, s, m) {
      var t = this,
        k = null,
        l = false,
        r = 3;
      if (m.attr("ignore") === "ignore" && a.util.isEmpty.call(m, s)) {
        if (m.data("cked")) { k = "" }
        return { passed: true, type: 4, info: k } }
      m.data("cked", "cked");
      var u = a.util.parseDatatype(n);
      var q;
      for (var p = 0; p < u.length; p++) {
        for (var o = 0; o < u[p].length; o++) { q = a.util._regcheck(u[p][o], s, m, t);
          if (!q.passed) {
            break } }
        if (q.passed) {
          break } }
      return q }, parseDatatype: function (r) {
      var q = /\/.+?\/[mgi]*(?=(,|$|\||\s))|[\w\*-]+/g,
        o = r.match(q),
        p = r.replace(q, "").replace(/\s*/g, "").split(""),
        l = [],
        k = 0;
      l[0] = [];
      l[0].push(o[0]);
      for (var s = 0; s < p.length; s++) {
        if (p[s] == "|") { k++;
          l[k] = [] }
        l[k].push(o[s + 1]) }
      return l }, showmsg: function (n, l, m, k) {
      if (n == b) {
        return }
      if (k == "bycheck" && m.sweep && (m.obj && !m.obj.is(".Validform_error") || typeof l == "function")) {
        return }
      d.extend(m, { curform: this });
      if (typeof l == "function") { l(n, m, a.util.cssctl);
        return }
      if (l == 1 || k == "byajax" && l != 4) { j.find(".Validform_info").html(n) }
      if (l == 1 && k != "bycheck" && m.type != 2 || k == "byajax" && l != 4) { i = false;
        j.find(".iframe").css("height", j.outerHeight());
        j.show();
        h(j, 100) }
      if (l == 2 && m.obj) { m.obj.parent().next().find(".Validform_checktip").html(n);
        a.util.cssctl(m.obj.parent().next().find(".Validform_checktip"), m.type) }
      if ((l == 3 || l == 4) && m.obj) { m.obj.siblings(".Validform_checktip").html(n);
        a.util.cssctl(m.obj.siblings(".Validform_checktip"), m.type) } }, cssctl: function (l, k) {
      switch (k) {
        case 1:
          l.removeClass("Validform_right Validform_wrong").addClass("Validform_checktip Validform_loading");
          break;
        case 2:
          l.removeClass("Validform_wrong Validform_loading").addClass("Validform_checktip Validform_right");
          break;
        case 4:
          l.removeClass("Validform_right Validform_wrong Validform_loading").addClass("Validform_checktip");
          break;
        default:
          l.removeClass("Validform_right Validform_loading").addClass("Validform_checktip Validform_wrong") } }, check: function (v, t, n) {
      var o = v[0].settings;
      var t = t || "";
      var k = a.util.getValue.call(v, d(this));
      if (o.ignoreHidden && d(this).is(":hidden") || d(this).data("dataIgnore") === "dataIgnore") {
        return true }
      if (o.dragonfly && !d(this).data("cked") && a.util.isEmpty.call(d(this), k) && d(this).attr("ignore") != "ignore") {
        return false }
      var s = a.util.regcheck.call(v, d(this).attr("datatype"), k, d(this));
      if (k == this.validform_lastval && !d(this).attr("recheck") && t == "") {
        return s.passed ? true : false }
      this.validform_lastval = k;
      var r;
      g = r = d(this);
      if (!s.passed) { a.util.abort.call(r[0]);
        if (!n) { a.util.showmsg.call(v, s.info, o.tiptype, { obj: d(this), type: s.type, sweep: o.tipSweep }, "bycheck");!o.tipSweep && r.addClass("Validform_error") }
        return false }
      var q = d(this).attr("ajaxurl");
      if (q && !a.util.isEmpty.call(d(this), k) && !n) {
        var m = d(this);
        if (t == "postform") { m[0].validform_subpost = "postform" } else { m[0].validform_subpost = "" }
        if (m[0].validform_valid === "posting" && k == m[0].validform_ckvalue) {
          return "ajax" }
        m[0].validform_valid = "posting";
        m[0].validform_ckvalue = k;
        a.util.showmsg.call(v, v.data("tipmsg").c || e.c, o.tiptype, { obj: m, type: 1, sweep: o.tipSweep }, "bycheck");
        a.util.abort.call(r[0]);
        var u = d.extend(true, {}, o.ajaxurl || {});
        var p = { type: "POST", cache: false, url: q, data: "param=" + encodeURIComponent(k) + "&name=" + encodeURIComponent(d(this).attr("name")), success: function (x) {
            if (d.trim(x.status) === "y") { m[0].validform_valid = "true";
              x.info && m.attr("sucmsg", x.info);
              a.util.showmsg.call(v, m.attr("sucmsg") || v.data("tipmsg").r || e.r, o.tiptype, { obj: m, type: 2, sweep: o.tipSweep }, "bycheck");
              r.removeClass("Validform_error");
              g = null;
              if (m[0].validform_subpost == "postform") { v.trigger("submit") } } else { m[0].validform_valid = x.info;
              a.util.showmsg.call(v, x.info, o.tiptype, { obj: m, type: 3, sweep: o.tipSweep });
              r.addClass("Validform_error") }
            r[0].validform_ajax = null }, error: function (x) {
            if (x.status == "200") {
              if (x.responseText == "y") { u.success({ status: "y" }) } else { u.success({ status: "n", info: x.responseText }) }
              return false }
            if (x.statusText !== "abort") {
              var y = "status: " + x.status + "; statusText: " + x.statusText;
              a.util.showmsg.call(v, y, o.tiptype, { obj: m, type: 3, sweep: o.tipSweep });
              r.addClass("Validform_error") }
            m[0].validform_valid = x.statusText;
            r[0].validform_ajax = null;
            return true } };
        if (u.success) {
          var w = u.success;
          u.success = function (x) { p.success(x);
            w(x, m) } }
        if (u.error) {
          var l = u.error;
          u.error = function (x) { p.error(x) && l(x, m) } }
        u = d.extend({}, p, u, { dataType: "json" });
        r[0].validform_ajax = d.ajax(u);
        return "ajax" } else {
        if (q && a.util.isEmpty.call(d(this), k)) { a.util.abort.call(r[0]);
          r[0].validform_valid = "true" } }
      if (!n) { a.util.showmsg.call(v, s.info, o.tiptype, { obj: d(this), type: s.type, sweep: o.tipSweep }, "bycheck");
        r.removeClass("Validform_error") }
      g = null;
      return true }, submitForm: function (o, l, k, r, t) {
      var w = this;
      if (w[0].validform_status === "posting") {
        return false }
      if (o.postonce && w[0].validform_status === "posted") {
        return false }
      var v = o.beforeCheck && o.beforeCheck(w);
      if (v === false) {
        return false }
      var s = true,
        n;
      w.find("[datatype]").each(function () {
        if (l) {
          return false }
        if (o.ignoreHidden && d(this).is(":hidden") || d(this).data("dataIgnore") === "dataIgnore") {
          return true }
        var z = a.util.getValue.call(w, d(this)),
          A;
        g = A = d(this);
        n = a.util.regcheck.call(w, d(this).attr("datatype"), z, d(this));
        if (!n.passed) { a.util.showmsg.call(w, n.info, o.tiptype, { obj: d(this), type: n.type, sweep: o.tipSweep });
          A.addClass("Validform_error");
          if (!o.showAllError) { A.focus();
            s = false;
            return false }
          s && (s = false);
          return true }
        if (d(this).attr("ajaxurl") && !a.util.isEmpty.call(d(this), z)) {
          if (this.validform_valid !== "true") {
            var y = d(this);
            a.util.showmsg.call(w, w.data("tipmsg").v || e.v, o.tiptype, { obj: y, type: 3, sweep: o.tipSweep });
            A.addClass("Validform_error");
            y.trigger("blur", ["postform"]);
            if (!o.showAllError) { s = false;
              return false }
            s && (s = false);
            return true } } else {
          if (d(this).attr("ajaxurl") && a.util.isEmpty.call(d(this), z)) { a.util.abort.call(this);
            this.validform_valid = "true" } }
        a.util.showmsg.call(w, n.info, o.tiptype, { obj: d(this), type: n.type, sweep: o.tipSweep });
        A.removeClass("Validform_error");
        g = null });
      if (o.showAllError) { w.find(".Validform_error:first").focus() }
      if (s) {
        var q = o.beforeSubmit && o.beforeSubmit(w);
        if (q === false) {
          return false }
        w[0].validform_status = "posting";
        if (o.ajaxPost || r === "ajaxPost") {
          var u = d.extend(true, {}, o.ajaxpost || {});
          u.url = k || u.url || o.url || w.attr("action");
          a.util.showmsg.call(w, w.data("tipmsg").p || e.p, o.tiptype, { obj: w, type: 1, sweep: o.tipSweep }, "byajax");
          if (t) { u.async = false } else {
            if (t === false) { u.async = true } }
          if (u.success) {
            var x = u.success;
            u.success = function (y) { o.callback && o.callback(y);
              w[0].validform_ajax = null;
              if (d.trim(y.status) === "y") { w[0].validform_status = "posted" } else { w[0].validform_status = "normal" }
              x(y, w) } }
          if (u.error) {
            var m = u.error;
            u.error = function (y) { o.callback && o.callback(y);
              w[0].validform_status = "normal";
              w[0].validform_ajax = null;
              m(y, w) } }
          var p = { type: "POST", async: true, data: w.serializeArray(), success: function (y) {
              if (d.trim(y.status) === "y") { w[0].validform_status = "posted";
                a.util.showmsg.call(w, y.info, o.tiptype, { obj: w, type: 2, sweep: o.tipSweep }, "byajax") } else { w[0].validform_status = "normal";
                a.util.showmsg.call(w, y.info, o.tiptype, { obj: w, type: 3, sweep: o.tipSweep }, "byajax") }
              o.callback && o.callback(y);
              w[0].validform_ajax = null }, error: function (y) {
              var z = "status: " + y.status + "; statusText: " + y.statusText;
              a.util.showmsg.call(w, z, o.tiptype, { obj: w, type: 3, sweep: o.tipSweep }, "byajax");
              o.callback && o.callback(y);
              w[0].validform_status = "normal";
              w[0].validform_ajax = null } };
          u = d.extend({}, p, u, { dataType: "json" });
          w[0].validform_ajax = d.ajax(u) } else {
          if (!o.postonce) { w[0].validform_status = "normal" }
          var k = k || o.url;
          if (k) { w.attr("action", k) }
          return o.callback && o.callback(w) } }
      return false }, resetForm: function () {
      var k = this;
      k.each(function () { this.reset && this.reset();
        this.validform_status = "normal" });
      k.find(".Validform_right").text("");
      k.find(".passwordStrength").children().removeClass("bgStrength");
      k.find(".Validform_checktip").removeClass("Validform_wrong Validform_right Validform_loading");
      k.find(".Validform_error").removeClass("Validform_error");
      k.find("[datatype]").removeData("cked").removeData("dataIgnore").each(function () { this.validform_lastval = null });
      k.eq(0).find("input:first").focus() }, abort: function () {
      if (this.validform_ajax) { this.validform_ajax.abort() } } };
  d.Datatype = a.util.dataType;
  a.prototype = { dataType: a.util.dataType, eq: function (l) {
      var k = this;
      if (l >= k.forms.length) {
        return null }
      if (!(l in k.objects)) { k.objects[l] = new a(d(k.forms[l]).get(), {}, true) }
      return k.objects[l] }, resetStatus: function () {
      var k = this;
      d(k.forms).each(function () { this.validform_status = "normal" });
      return this }, setStatus: function (k) {
      var l = this;
      d(l.forms).each(function () { this.validform_status = k || "posting" });
      return this }, getStatus: function () {
      var l = this;
      var k = d(l.forms)[0].validform_status;
      return k }, ignore: function (k) {
      var l = this;
      var k = k || "[datatype]";
      d(l.forms).find(k).each(function () { d(this).data("dataIgnore", "dataIgnore").removeClass("Validform_error") });
      return this }, unignore: function (k) {
      var l = this;
      var k = k || "[datatype]";
      d(l.forms).find(k).each(function () { d(this).removeData("dataIgnore") });
      return this }, addRule: function (n) {
      var m = this;
      var n = n || [];
      for (var l = 0; l < n.length; l++) {
        var p = d(m.forms).find(n[l].ele);
        for (var k in n[l]) { k !== "ele" && p.attr(k, n[l][k]) } }
      d(m.forms).each(function () {
        var o = d(this);
        a.util.enhance.call(o, this.settings.tiptype, this.settings.usePlugin, this.settings.tipSweep, "addRule") });
      return this }, ajaxPost: function (k, m, l) {
      var n = this;
      d(n.forms).each(function () {
        if (this.settings.tiptype == 1 || this.settings.tiptype == 2 || this.settings.tiptype == 3) { c() }
        a.util.submitForm.call(d(n.forms[0]), this.settings, k, l, "ajaxPost", m) });
      return this }, submitForm: function (k, l) {
      var m = this;
      d(m.forms).each(function () {
        var n = a.util.submitForm.call(d(this), this.settings, k, l);
        n === b && (n = true);
        if (n === true) { this.submit() } });
      return this }, resetForm: function () {
      var k = this;
      a.util.resetForm.call(d(k.forms));
      return this }, abort: function () {
      var k = this;
      d(k.forms).each(function () { a.util.abort.call(this) });
      return this }, check: function (m, k) {
      var k = k || "[datatype]",
        o = this,
        n = d(o.forms),
        l = true;
      n.find(k).each(function () { a.util.check.call(this, n, "", m) || (l = false) });
      return l }, config: function (k) {
      var l = this;
      k = k || {};
      d(l.forms).each(function () {
        var m = d(this);
        this.settings = d.extend(true, this.settings, k);
        a.util.enhance.call(m, this.settings.tiptype, this.settings.usePlugin, this.settings.tipSweep) });
      return this } };
  d.fn.Validform = function (k) {
    return new a(this, k) };

  function h(n, m) {
    var l = (d(window).width() - n.outerWidth()) / 2,
      k = (d(window).height() - n.outerHeight()) / 2,
      k = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + (k > 0 ? k : 0);
    n.css({ left: l }).animate({ top: k }, { duration: m, queue: false }) }

  function c() {
    if (d("#Validform_msg").length !== 0) {
      return false }
    j = d('<div id="Validform_msg" class="m-layer m-layer-show"><div class="lymask"></div><table class="lytable"><tbody><tr><td class="lytd"><div class="lywrap"><div class="lytt"><h2 class="u-tt">' + e.tit + '</h2><span class="lyclose"><a class="Validform_close" href="javascript:void(0);">×</a></span></div><div class="lyct"><p><div class="Validform_info"></div></p><div class="iframe"><iframe frameborder="0" scrolling="no" height="100%" width="100%"></iframe></div></div></td></tr></tbody></table></div>').appendTo("body");
    j.find("a.Validform_close").click(function () { j.hide();
      i = true;
      if (g) { g.focus().addClass("Validform_error") }
      return false }).focus(function () { this.blur() });
    d(window).bind("scroll resize", function () {!i && h(j, 400) }) }
  d.Showmsg = function (k) { c();
    a.util.showmsg.call(f, k, 1, {}) };
  d.Hidemsg = function () { j.hide();
    i = true } })(jQuery, window);
$(function () {
  $.Tipmsg.r = null;
  var showmsg = function (msg) { //假定你的信息提示方法为showmsg， 在方法里可以接收参数msg，当然也可以接收到o及cssctl;
    alert(msg);
  }
  $(".validforms").Validform({
    tiptype: function (msg) {
      showmsg(msg);
    },
    tipSweep: true
  });
})
